﻿using BCCommon;
using BCDto.MakeStaticPagingComponent.PageTemplate;
using System;
using System.Collections.Generic;
using System.Text;

namespace BCService.MakeStaticPagingComponent.PageTemplateService
{
    /// <summary>
    /// 页面模板服务接口
    /// </summary>
    public interface IPageTemplateService
    {
        /// <summary>
        /// 添加页面模板信息
        /// </summary>
        /// <param name="pageTemplateRequestDto">页面模板信息</param>
        /// <returns></returns>
        PageTemplateDto Add(PageTemplateRequestDto pageTemplateRequestDto);
        /// <summary>
        /// 更新页面模板信息
        /// </summary>
        /// <param name="pageTemplateId">页面模板Id</param>
        /// <param name="pageTemplateRequestDto">页面模板信息</param>
        /// <returns></returns>
        PageTemplateDto Update(long pageTemplateId, PageTemplateRequestDto pageTemplateRequestDto);
        /// <summary>
        /// 删除页面模板信息
        /// </summary>
        /// <param name="pageTemplateId">页面模板Id</param>
        void Delete(long pageTemplateId);
        /// <summary>
        /// 更新网站模板为已使用
        /// </summary>
        /// <param name="websiteTemplateId">网站模本Id</param>
        /// <returns></returns>
        bool UpdateWebsiteTemplateIsUsed(int websiteTemplateId);
        /// <summary>
        /// 获取页面模板信息
        /// </summary>
        /// <param name="pageCode">页面编码</param>
        /// <param name="websiteTemplateId">网站模板Id</param>
        /// <returns></returns>
        PageTemplateDto Get(string pageCode, int websiteTemplateId);
        /// <summary>
        /// 获取页面模板信息
        /// </summary>
        /// <param name="pageTemplateId">页面模板Id</param>
        /// <returns></returns>
        PageTemplateDto Get(long pageTemplateId);
        /// <summary>
        /// 获取页面配置模板信息（分页）
        /// </summary>
        /// <param name="pageName">页面名称</param>
        /// <param name="websiteTemplateId">网站模板Id</param>
        /// <param name="ascending">排序</param>
        /// <param name="index">当前页码</param>
        /// <param name="size">每页数据条数</param>
        /// <returns></returns>
        PageableList<PageTemplateDto> Get(string pageName, int websiteTemplateId, bool? ascending, int index = 1, int size = 20);
        /// <summary>
        /// 获取所有页面模板信息
        /// </summary>
        /// <returns></returns>
        IEnumerable<PageTemplateDto> GetAllPageTemplateList();
        /// <summary>
        /// 获取某页面模板子级列表
        /// </summary>
        /// <param name="websiteTemplateId">网站模板Id</param>
        /// <param name="parentPageCode">父级页面编码</param>
        /// <returns></returns>
        IEnumerable<PageTemplateDto> GetPageTemplateChildren(int websiteTemplateId, string parentPageCode);
        /// <summary>
        /// 获取任意网站模板下的页面模板信息树形列表
        /// </summary>
        /// <param name="websiteTemplateId">网站模板Id</param>
        /// <returns></returns>
        IEnumerable<PageTemplateDto> GetAnyWebsiteTemplateTree(long websiteTemplateId);
        /// <summary>
        /// 获取子级页面模板列表
        /// </summary>
        /// <param name="pageCode">页面编码</param>
        /// <returns></returns>
        IEnumerable<PageTemplateDto> GetSubPageTemplateList(string pageCode);
        /// <summary>
        /// 获取显示在导航栏的子级页面模板列表
        /// </summary>
        /// <param name="pageCode">页面编码</param>
        /// <returns></returns>
        IEnumerable<PageTemplateDto> GetShowNavigationSubPageTemplateList(string pageCode);
        /// <summary>
        /// 获取所有子节点信息
        /// </summary>
        /// <returns></returns>
        IEnumerable<PageTemplateDto> GetAllChild();
    }
}
